package com.ruoyi.platform.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * @program: RuoYi-Vue
 * @description: 巡检台账
 * @author: drgon
 * @create: 2025-9-18 36：50
 */
public class InspectionLedgerVo implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 系统编号
     */
    private Long storeId;

    /**
     * 系统编号
     */
    private Long storeLocationId;

    /**
     * 系统编号
     */
    private Long equipmentId;

    /**
     * 指令执行结果编号
     */
    private Long commandId;

    /**
     * 系统编号
     */
    private Long commandResultId;


    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String storeName;

    /**
     * 仓库编码
     */
    @Excel(name = "仓库编码")
    private String storeCode;

    /**
     * 监控设备名称
     */
    @Excel(name = "监控设备名称")
    private String equipmentName;

    /**
     * 监控设备编码
     */
    @Excel(name = "监控设备编码")
    private String equipmentCode;

    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String storeLocationName;

    /**
     * 仓位编码
     */
    @Excel(name = "仓位编码")
    private String storeLocationCode;

    /**
     * 监控设备IP
     */
//    @Excel(name = "监控设备IP")
    private String equipmentIp;

    /**
     * 监控设备用户名
     */
//    @Excel(name = "监控设备用户名")
    private String equipmentUserName;

    /**
     * 监控设备密码
     */
//    @Excel(name = "监控设备密码")
    private String equipmentPassword;

    /**
     * 设备通道
     */
//    @Excel(name = "设备通道")
    private Long equipmentChannel;

    /**
     * 监控设备类型
     */
    @Excel(name = "监控设备类型")
    private Long equipmentType;

    /**
     * 监控设备是否启用
     */
    @Excel(name = "监控设备是否启用")
    private Long equipmentUseStatus;

    /**
     * 监控设备开启自动巡检
     */
    @Excel(name = "监控设备开启自动巡检")
    private Long equipmentUseInspection;

    /**
     * 监控设备开启异常接收
     */
    @Excel(name = "监控设备开启异常接收")
    private Long equipmentUseWarning;

    /**
     * 是否开启数字孪生异常推送
     */
    @Excel(name = "监控设备开启数字孪生异常推送")
    private Long equipmentUseWarningPush;

    /**
     * 初始水平角（球机）
     */
    @Excel(name = "初始水平角")
    private BigDecimal pan;

    /**
     * 初始垂直角（球机）
     */
    @Excel(name = "初始垂直角")
    private BigDecimal tilt;

    /**
     * 缩放倍数（球机）
     */
    @Excel(name = "缩放倍数")
    private BigDecimal zoom;

    /**
     * 仓位状态
     */
    @Excel(name = "仓位状态")
    private Long storeLocationStatus;

    /**
     * 是否启用
     */
    @Excel(name = "仓位是否启用")
    private Long storeUseStatus;

    /**
     * 是否开启自动巡检
     */
    @Excel(name = "仓位开启自动巡检")
    private Long storeUseInspection;

    /**
     * 是否开启异常接收
     */
    @Excel(name = "仓位开启异常接收")
    private Long storeUseWarning;

    /**
     * 是否开启数字孪生异常推送
     */
    @Excel(name = "仓位开启数字孪生异常推送")
    private Long storeUseWarningPush;

    /**
     * 货物数量
     */
    @Excel(name = "仓位货物数量")
    private Long quantity;

    /**
     * 指令类型
     */
    @Excel(name = "指令类型")
    @NotNull(message = "指令类型不能为空")
    private Integer commandType;

    /**
     * 指令执行时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "指令执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date commandExecuteTime;

    /**
     * 指令执行最终状态
     */
//    @Excel(name = "指令执行最终状态")
    private Integer commandExecutionStatus;

    /**
     * 重试次数
     */
    @Excel(name = "重试次数")
    private Integer retryCount;

    /**
     * 预警状态
     */
    @Excel(name = "预警状态")
    private Integer warningStatus;

    /**
     * 巡检时仓位状态
     */
    @Excel(name = "巡检时仓位状态")
    private Integer inspectionStatus;

    /**
     * 巡检时仓位货物数量
     */
    @Excel(name = "巡检时仓位货物数量")
    private Integer inspectionQuantity;

    /**
     * 巡检人
     */
    @Excel(name = "巡检人")
    private String inspectionOperator;

    /**
     * 指令执行开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Excel(name = "指令执行开始时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
    private Date executeStartTime;

    /**
     * 指令执行结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Excel(name = "指令执行结束时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
    private Date executeEndTime;

    /**
     * 指令行状态
     */
    @Excel(name = "指令行状态")
    private Integer executionStatus;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof InspectionLedgerVo)) return false;
        InspectionLedgerVo that = (InspectionLedgerVo) o;
        return Objects.equals(getStoreId(), that.getStoreId()) && Objects.equals(getStoreLocationId(), that.getStoreLocationId()) && Objects.equals(getEquipmentId(), that.getEquipmentId()) && Objects.equals(getCommandId(), that.getCommandId()) && Objects.equals(getCommandResultId(), that.getCommandResultId()) && Objects.equals(getStoreName(), that.getStoreName()) && Objects.equals(getStoreCode(), that.getStoreCode()) && Objects.equals(getEquipmentName(), that.getEquipmentName()) && Objects.equals(getEquipmentCode(), that.getEquipmentCode()) && Objects.equals(getStoreLocationName(), that.getStoreLocationName()) && Objects.equals(getStoreLocationCode(), that.getStoreLocationCode()) && Objects.equals(getEquipmentIp(), that.getEquipmentIp()) && Objects.equals(getEquipmentUserName(), that.getEquipmentUserName()) && Objects.equals(getEquipmentPassword(), that.getEquipmentPassword()) && Objects.equals(getEquipmentChannel(), that.getEquipmentChannel()) && Objects.equals(getEquipmentType(), that.getEquipmentType()) && Objects.equals(getEquipmentUseStatus(), that.getEquipmentUseStatus()) && Objects.equals(getEquipmentUseInspection(), that.getEquipmentUseInspection()) && Objects.equals(getEquipmentUseWarning(), that.getEquipmentUseWarning()) && Objects.equals(getEquipmentUseWarningPush(), that.getEquipmentUseWarningPush()) && Objects.equals(getPan(), that.getPan()) && Objects.equals(getTilt(), that.getTilt()) && Objects.equals(getZoom(), that.getZoom()) && Objects.equals(getStoreLocationStatus(), that.getStoreLocationStatus()) && Objects.equals(getStoreUseStatus(), that.getStoreUseStatus()) && Objects.equals(getStoreUseInspection(), that.getStoreUseInspection()) && Objects.equals(getStoreUseWarning(), that.getStoreUseWarning()) && Objects.equals(getStoreUseWarningPush(), that.getStoreUseWarningPush()) && Objects.equals(getQuantity(), that.getQuantity()) && Objects.equals(getCommandType(), that.getCommandType()) && Objects.equals(getCommandExecuteTime(), that.getCommandExecuteTime()) && Objects.equals(getCommandExecutionStatus(), that.getCommandExecutionStatus()) && Objects.equals(getRetryCount(), that.getRetryCount()) && Objects.equals(getWarningStatus(), that.getWarningStatus()) && Objects.equals(getInspectionStatus(), that.getInspectionStatus()) && Objects.equals(getInspectionQuantity(), that.getInspectionQuantity()) && Objects.equals(getInspectionOperator(), that.getInspectionOperator()) && Objects.equals(getExecuteStartTime(), that.getExecuteStartTime()) && Objects.equals(getExecuteEndTime(), that.getExecuteEndTime()) && Objects.equals(getExecutionStatus(), that.getExecutionStatus());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getStoreId(), getStoreLocationId(), getEquipmentId(), getCommandId(), getCommandResultId(), getStoreName(), getStoreCode(), getEquipmentName(), getEquipmentCode(), getStoreLocationName(), getStoreLocationCode(), getEquipmentIp(), getEquipmentUserName(), getEquipmentPassword(), getEquipmentChannel(), getEquipmentType(), getEquipmentUseStatus(), getEquipmentUseInspection(), getEquipmentUseWarning(), getEquipmentUseWarningPush(), getPan(), getTilt(), getZoom(), getStoreLocationStatus(), getStoreUseStatus(), getStoreUseInspection(), getStoreUseWarning(), getStoreUseWarningPush(), getQuantity(), getCommandType(), getCommandExecuteTime(), getCommandExecutionStatus(), getRetryCount(), getWarningStatus(), getInspectionStatus(), getInspectionQuantity(), getInspectionOperator(), getExecuteStartTime(), getExecuteEndTime(), getExecutionStatus());
    }

    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public Long getStoreLocationId() {
        return storeLocationId;
    }

    public void setStoreLocationId(Long storeLocationId) {
        this.storeLocationId = storeLocationId;
    }

    public Long getEquipmentId() {
        return equipmentId;
    }

    public void setEquipmentId(Long equipmentId) {
        this.equipmentId = equipmentId;
    }

    public Long getCommandId() {
        return commandId;
    }

    public void setCommandId(Long commandId) {
        this.commandId = commandId;
    }

    public Long getCommandResultId() {
        return commandResultId;
    }

    public void setCommandResultId(Long commandResultId) {
        this.commandResultId = commandResultId;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    public String getStoreCode() {
        return storeCode;
    }

    public void setStoreCode(String storeCode) {
        this.storeCode = storeCode;
    }

    public String getEquipmentName() {
        return equipmentName;
    }

    public void setEquipmentName(String equipmentName) {
        this.equipmentName = equipmentName;
    }

    public String getEquipmentCode() {
        return equipmentCode;
    }

    public void setEquipmentCode(String equipmentCode) {
        this.equipmentCode = equipmentCode;
    }

    public String getStoreLocationName() {
        return storeLocationName;
    }

    public void setStoreLocationName(String storeLocationName) {
        this.storeLocationName = storeLocationName;
    }

    public String getStoreLocationCode() {
        return storeLocationCode;
    }

    public void setStoreLocationCode(String storeLocationCode) {
        this.storeLocationCode = storeLocationCode;
    }

    public String getEquipmentIp() {
        return equipmentIp;
    }

    public void setEquipmentIp(String equipmentIp) {
        this.equipmentIp = equipmentIp;
    }

    public String getEquipmentUserName() {
        return equipmentUserName;
    }

    public void setEquipmentUserName(String equipmentUserName) {
        this.equipmentUserName = equipmentUserName;
    }

    public String getEquipmentPassword() {
        return equipmentPassword;
    }

    public void setEquipmentPassword(String equipmentPassword) {
        this.equipmentPassword = equipmentPassword;
    }

    public Long getEquipmentChannel() {
        return equipmentChannel;
    }

    public void setEquipmentChannel(Long equipmentChannel) {
        this.equipmentChannel = equipmentChannel;
    }

    public Long getEquipmentType() {
        return equipmentType;
    }

    public void setEquipmentType(Long equipmentType) {
        this.equipmentType = equipmentType;
    }

    public Long getEquipmentUseStatus() {
        return equipmentUseStatus;
    }

    public void setEquipmentUseStatus(Long equipmentUseStatus) {
        this.equipmentUseStatus = equipmentUseStatus;
    }

    public Long getEquipmentUseInspection() {
        return equipmentUseInspection;
    }

    public void setEquipmentUseInspection(Long equipmentUseInspection) {
        this.equipmentUseInspection = equipmentUseInspection;
    }

    public Long getEquipmentUseWarning() {
        return equipmentUseWarning;
    }

    public void setEquipmentUseWarning(Long equipmentUseWarning) {
        this.equipmentUseWarning = equipmentUseWarning;
    }

    public Long getEquipmentUseWarningPush() {
        return equipmentUseWarningPush;
    }

    public void setEquipmentUseWarningPush(Long equipmentUseWarningPush) {
        this.equipmentUseWarningPush = equipmentUseWarningPush;
    }

    public BigDecimal getPan() {
        return pan;
    }

    public void setPan(BigDecimal pan) {
        this.pan = pan;
    }

    public BigDecimal getTilt() {
        return tilt;
    }

    public void setTilt(BigDecimal tilt) {
        this.tilt = tilt;
    }

    public BigDecimal getZoom() {
        return zoom;
    }

    public void setZoom(BigDecimal zoom) {
        this.zoom = zoom;
    }

    public Long getStoreLocationStatus() {
        return storeLocationStatus;
    }

    public void setStoreLocationStatus(Long storeLocationStatus) {
        this.storeLocationStatus = storeLocationStatus;
    }

    public Long getStoreUseStatus() {
        return storeUseStatus;
    }

    public void setStoreUseStatus(Long storeUseStatus) {
        this.storeUseStatus = storeUseStatus;
    }

    public Long getStoreUseInspection() {
        return storeUseInspection;
    }

    public void setStoreUseInspection(Long storeUseInspection) {
        this.storeUseInspection = storeUseInspection;
    }

    public Long getStoreUseWarning() {
        return storeUseWarning;
    }

    public void setStoreUseWarning(Long storeUseWarning) {
        this.storeUseWarning = storeUseWarning;
    }

    public Long getStoreUseWarningPush() {
        return storeUseWarningPush;
    }

    public void setStoreUseWarningPush(Long storeUseWarningPush) {
        this.storeUseWarningPush = storeUseWarningPush;
    }

    public Long getQuantity() {
        return quantity;
    }

    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }

    public Integer getCommandType() {
        return commandType;
    }

    public void setCommandType(Integer commandType) {
        this.commandType = commandType;
    }

    @Override
    public String toString() {
        return "InspectionLedgerVo{" +
                "storeId=" + storeId +
                ", storeLocationId=" + storeLocationId +
                ", equipmentId=" + equipmentId +
                ", commandId=" + commandId +
                ", commandResultId=" + commandResultId +
                ", storeName='" + storeName + '\'' +
                ", storeCode='" + storeCode + '\'' +
                ", equipmentName='" + equipmentName + '\'' +
                ", equipmentCode='" + equipmentCode + '\'' +
                ", storeLocationName='" + storeLocationName + '\'' +
                ", storeLocationCode='" + storeLocationCode + '\'' +
                ", equipmentIp='" + equipmentIp + '\'' +
                ", equipmentUserName='" + equipmentUserName + '\'' +
                ", equipmentPassword='" + equipmentPassword + '\'' +
                ", equipmentChannel=" + equipmentChannel +
                ", equipmentType=" + equipmentType +
                ", equipmentUseStatus=" + equipmentUseStatus +
                ", equipmentUseInspection=" + equipmentUseInspection +
                ", equipmentUseWarning=" + equipmentUseWarning +
                ", equipmentUseWarningPush=" + equipmentUseWarningPush +
                ", pan=" + pan +
                ", tilt=" + tilt +
                ", zoom=" + zoom +
                ", storeLocationStatus=" + storeLocationStatus +
                ", storeUseStatus=" + storeUseStatus +
                ", storeUseInspection=" + storeUseInspection +
                ", storeUseWarning=" + storeUseWarning +
                ", storeUseWarningPush=" + storeUseWarningPush +
                ", storeQuantity=" + quantity +
                ", commandType=" + commandType +
                ", commandExecuteTime=" + commandExecuteTime +
                ", commandExecutionStatus=" + commandExecutionStatus +
                ", retryCount=" + retryCount +
                ", inspectionWarningStatus=" + warningStatus +
                ", inspectionStatus=" + inspectionStatus +
                ", inspectionQuantity=" + inspectionQuantity +
                ", inspectionOperator='" + inspectionOperator + '\'' +
                ", executeStartTime=" + executeStartTime +
                ", executeEndTime=" + executeEndTime +
                ", executionStatus=" + executionStatus +
                '}';
    }

    public Date getCommandExecuteTime() {
        return commandExecuteTime;
    }

    public void setCommandExecuteTime(Date commandExecuteTime) {
        this.commandExecuteTime = commandExecuteTime;
    }

    public Integer getCommandExecutionStatus() {
        return commandExecutionStatus;
    }

    public void setCommandExecutionStatus(Integer commandExecutionStatus) {
        this.commandExecutionStatus = commandExecutionStatus;
    }

    public Integer getRetryCount() {
        return retryCount;
    }

    public void setRetryCount(Integer retryCount) {
        this.retryCount = retryCount;
    }

    public Integer getWarningStatus() {
        return warningStatus;
    }

    public void setWarningStatus(Integer warningStatus) {
        this.warningStatus = warningStatus;
    }

    public Integer getInspectionStatus() {
        return inspectionStatus;
    }

    public void setInspectionStatus(Integer inspectionStatus) {
        this.inspectionStatus = inspectionStatus;
    }

    public Integer getInspectionQuantity() {
        return inspectionQuantity;
    }

    public void setInspectionQuantity(Integer inspectionQuantity) {
        this.inspectionQuantity = inspectionQuantity;
    }

    public String getInspectionOperator() {
        return inspectionOperator;
    }

    public void setInspectionOperator(String inspectionOperator) {
        this.inspectionOperator = inspectionOperator;
    }

    public Date getExecuteStartTime() {
        return executeStartTime;
    }

    public void setExecuteStartTime(Date executeStartTime) {
        this.executeStartTime = executeStartTime;
    }

    public Date getExecuteEndTime() {
        return executeEndTime;
    }

    public void setExecuteEndTime(Date executeEndTime) {
        this.executeEndTime = executeEndTime;
    }

    public Integer getExecutionStatus() {
        return executionStatus;
    }

    public void setExecutionStatus(Integer executionStatus) {
        this.executionStatus = executionStatus;
    }

}
